﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;

namespace Marmat.Forms.Win32API
{
    /// <summary>
    /// 是 Microsoft Desktop Window Manager API（桌面窗口管理器DWM 的公用界面）的动态链接库，属于正常文件，主要用作桌面效果（如 Aero 效果）的API。
    /// </summary>
    public sealed class DwmApi
    {
        /// <summary>
        /// 将窗口框架扩展到客户区域。
        /// 
        /// </summary>
        /// <param name="hWnd"></param>
        /// <param name="pMarInset"></param>
        /// <returns></returns>
        [DllImport("dwmapi.dll")]
        public static extern int DwmExtendFrameIntoClientArea(IntPtr hWnd, ref MARGINS pMarInset);

        /// <summary>
        /// 设置窗口的桌面窗口管理器(DWM)非客户端呈现属性的值。有关编程指导和代码示例，请参见控制非客户端区域呈现。
        /// </summary>
        /// <param name="hwnd"></param>
        /// <param name="attr"></param>
        /// <param name="attrValue"></param>
        /// <param name="attrSize"></param>
        /// <returns></returns>
        [DllImport("dwmapi.dll")]
        public static extern int DwmSetWindowAttribute(IntPtr hwnd, int attr, ref int attrValue, int attrSize);

        /// <summary>
        /// 获取一个值，该值指示是否启用桌面窗口管理器(DWM)组合。运行Windows 7或更早版本的计算机上的应用程序可以通过处理WM_DWMCOMPOSITIONCHANGED通知来侦听组合状态更改。
        /// </summary>
        /// <param name="pfEnabled"></param>
        /// <returns></returns>
        [DllImport("dwmapi.dll")]
        public static extern int DwmIsCompositionEnabled(ref int pfEnabled);
    }
}
